﻿#include "MainWindowDemo.h"
#include "ui_MainWindowDemo.h"
#include <QTimer>
#include <QAction>
#include <QDebug>
#include "BaseWidget/IdaDialogMsg.h"
#include "Dialog2DPlot.h"

MainWindowDemo::MainWindowDemo(QWidget *parent)
	: IdaMainWindow(parent)
	, ui(new Ui::MainWindowDemo())
{
	ui->setupUi(this);

    initWidget();
    initData();
}

MainWindowDemo::~MainWindowDemo()
{
	delete ui;
}

void MainWindowDemo::initWidget()
{
    //默认为模态
    //setWindowModality(Qt::WindowModality::NonModal);	
    //设置窗体图标
    setWindowIcon(QIcon(":/app_icon.icon"));
    //设置窗体标题
    setWindowTitle(QStringLiteral("自定义窗体"));
    //设置窗体大小
    resize(450, 390);

    //隐藏菜单栏
    ui->menuBar->hide();
    //隐藏状态栏
    //ui->statusBar->hide();
    //设置工具栏
    //ui->mainToolBar->hide();

    connect(this, &IdaMainWindow::signal_windowStateChange, [](Qt::WindowStates windowState) 
        { 
            if (Qt::WindowMinimized == windowState)
                qDebug() << QStringLiteral("窗体最小化");
            else if (Qt::WindowMaximized == windowState)
                qDebug() << QStringLiteral("窗体最大化");
            else if (Qt::WindowNoState == windowState)
                qDebug() << QStringLiteral("窗体正常化");
        });
    connect(this, &IdaMainWindow::signal_closeButtonClick, [&]() 
        { 
            qDebug() << QStringLiteral("窗体关闭"); 
            this->close();
        });

    auto _printDialogMsgResult = [](EDialogMsgResult result)
        {
            qDebug() << (result == EDialogMsgResult::First ? QStringLiteral("第一个按钮.")
                : (result == EDialogMsgResult::Second ? QStringLiteral("第二个按钮.")
                    : (result == EDialogMsgResult::Third ? QStringLiteral("第三个按钮.") : QStringLiteral("未知按钮."))));
        };

    auto _actionDialogMsg = new QAction(QStringLiteral("打开消息对话框"),this);
    connect(_actionDialogMsg, &QAction::triggered, [=](bool checked = false)
        {
            qDebug() << QStringLiteral("打开消息对话框");
            auto _result = IdaDialogMsg::showDialog(this, QStringLiteral("这是一个默认对话框测试？"));
            _printDialogMsgResult(_result);

            _result = IdaDialogMsg::showDialog(this, QStringLiteral("这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？这是一个对话框测试 111？"), EDialogMsg::Question, QStringLiteral("这是提问"));
            _printDialogMsgResult(_result);
            
            _result = IdaDialogMsg::showDialog(this, QStringLiteral("这是一个对话框测试 222？"), EDialogMsg::Warning, QStringLiteral("这是警告"));
            _printDialogMsgResult(_result);
            
            _result = IdaDialogMsg::showDialog(this, QStringLiteral("这是一个对话框测试 333？"), EDialogMsg::Custom, QStringLiteral("这是自定义"), QStringLiteral("警1告,警2告,警3告").split(","));
            _printDialogMsgResult(_result);
           
        });

    auto _actionDialog = new QAction(QStringLiteral("打开对话框"), this);
    connect(_actionDialog, &QAction::triggered, [=](bool checked = false)
        {
            qDebug() << QStringLiteral("打开对话框");
            auto _dialog2D = new Dialog2DPlot(this);
            //_dialog2D->showWindow();
            auto _result = _dialog2D->execWindow();
            qDebug() << QStringLiteral("对话框结果 = ") << _result;

        });

    ui->mainToolBar->addAction(_actionDialogMsg);
    ui->mainToolBar->addAction(_actionDialog);


}

void MainWindowDemo::initData()
{
    qDebug() << "QPoint" << this->mapToGlobal(QPoint(0, 0));


}
